Conventional live transcoding systems accept multimedia inputs (i.e., inputs containing video, audio, captions, etc.) in real time. Such systems transcode those inputs in one of many ways (for instance, by changing the video compression) and generate streams presented either to a file or to a live output. The operator of such a system often has customers and/or advertisers that rely on the output of the live transcoding system. The stability of the output is imperative. To help ensure a reliable output, some live transcoding systems accept multiple redundant inputs (for instance, the same multimedia content delivered as a MPEG2 transport stream over user datagram protocol (UDP) on two different network interface controllers (NICs)). Failover from one input (the active input) to the other (the standby input) occurs if a problem is detected in the former. The failover from one input to the next is usually detectable on the output in one of many undesirable ways. In the best case, an input freeze or black picture is created. In the worst case, the output transport stream is totally corrupted.
In conventional systems, the failover transition is not frame accurate. After the failover, the video and audio content does not resume with the next frame that would have been output had a failover not occurred. Lack of frame accuracy results in either a segment of the input content never reaching the output or in retransmission of video and audio frames that have already been transmitted on the output. The problem is exacerbated when the active and standby inputs arrive across different networks (to avoid a network failure from interrupting both inputs). Different networks often have different delays. One input may be delayed considerably relative to the other.
Another problem with conventional systems is that the failover transition from one input to the next input takes time which results in an underflow of the output buffer. Such delay produces a time gap in the delivery of output packets. When generating an output for a file, such a delay is often not a concern. When generating a real-time output, like MPEG2 transport streams over UDP, gaps on the output can cause playout issues with down stream decoders, which is undesirable.
It would be desirable to implement frame accurate hot failover in a real-time video transcoding system.